//==========================================================================
// Copyright (c) 2000-2008,  Elastos, Inc.  All Rights Reserved.
//==========================================================================

#ifndef __ELASTOS_TLB_H__
#define __ELASTOS_TLB_H__

EXTERN_C void InitTlb();
EXTERN_C void FillTlb(Address vAddr, InterruptContext *pContext);
EXTERN_C void FillGlobalTlb(Address vAddr);
EXTERN_C void ReadTlb(int nIndex, uint32_t *pEntryHi, uint32_t *pEntryLo0,
                        uint32_t *pEntryLo1, uint32_t *pPageMask);
EXTERN_C int FindTlb(Address vAddr);
EXTERN_C void InvalidTLB(Address vAddr);
EXTERN_C void InvalidEntry(int nIndex);
EXTERN_C void TLBRefill();
EXTERN_C void ViewCurrentTlb();
EXTERN_C void FillRandomEntry(Address entryHi, Address entryLo0, Address entryLo1);
EXTERN_C void FillAssignEntry(int nIndex, Address entryHi, Address entryLo0, Address entryLo1);
EXTERN_C void SetPageMask(uint32_t  uPageMask);

EXTERN_C void FlushAllTlbs();

INLINE void FlushTlb(virtaddr_t va)
{
}

#endif // __ELASTOS_TLB_H__
